<h1>LWIP组件说明</h1>

<h2>lwip 当前版本</h2>

<p>2.1.2</p>

<h2>lwip 重要维护历史</h2>

<table>
<thead>
<tr>
<th>时间</th>
<th>内容</th>
</tr>
</thead>

<tbody>
<tr>
<td>20200115</td>
<td>添加基于LWIP-2.1.2的组件</td>
</tr>

<tr>
<td>20200116</td>
<td>为兼容CI组件，将include文件夹从“lwip_tuya/src”移到根目录下</td>
</tr>

<tr>
<td>20200325</td>
<td>平台宏用&rdquo;tuya_iot_config.h&rdquo;里面的</td>
</tr>

<tr>
<td></td>
<td></td>
</tr>
</tbody>
</table>

<h2>lwip BUG修复历史（已全部默认打开）</h2>

<table>
<thead>
<tr>
<th>时间</th>
<th>标签/宏</th>
<th>作用</th>
</tr>
</thead>

<tbody>
<tr>
<td>20200126</td>
<td>ESP_LWIP</td>
<td>ESP_LWIP BUG综合修复</td>
</tr>

<tr>
<td>20200126</td>
<td>ESP_LWIP_SELECT</td>
<td>增加select变量传入，防止多线程切换出现问题</td>
</tr>

<tr>
<td>20200126</td>
<td>ESP_LWIP_LOCK</td>
<td>将锁前提，保护代码范围更合理</td>
</tr>

<tr>
<td>20200126</td>
<td>ESP_DHCP</td>
<td>netif删除时，清除DHCP的注册信息</td>
</tr>

<tr>
<td>20200126</td>
<td>LWIP_MEM_MEMSET_ZERO</td>
<td>mem_malloc申请到空间后内存清空，否则会出现acceptmbox变量有初始值的情况</td>
</tr>

<tr>
<td>20200130</td>
<td>LWIP_MPU_COMPATIBLE</td>
<td>在“opt.h”中强制打开，MPU内存保护操作，打开会多内存的保护和数据拷贝，不打开某些平台会有空指针</td>
</tr>

<tr>
<td>20200316</td>
<td>LWIP_DNSV6_OVERWRITE</td>
<td>解决新的ipv6 dns服务器地址覆盖以前获取的dns服务器地址问题</td>
</tr>

<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

<h2>lwip 涂鸦宏（用户需自行在HAL层“lwipopts.h”添加，并置0或1开关）</h2>

<table>
<thead>
<tr>
<th>时间</th>
<th>名称</th>
<th>作用</th>
</tr>
</thead>

<tbody>
<tr>
<td>20200301</td>
<td>LWIP_TCP_HEAD_ALLOC_REUSE_POLL</td>
<td>TCP头申请不到PBUF_RAM空间后，使用PBUF_POOL空间。打开该宏可能导致数据包丢包（一般驱动适配层用POOL）</td>
</tr>

<tr>
<td>20200302</td>
<td>LWIP_TUYA_APP_TCPIP_THREAD_SWITCH</td>
<td>线程的优先级功能，在应用发送消息后，会把当前应用的优先级升到最高，收到消息后再恢复到正常，用于加快应用速度。防止广播包过多的时候，TCPIP线程一直处理广播，应用层消息得不到处理</td>
</tr>

<tr>
<td>20200302</td>
<td>LWIP_TUYA_SO_LINGER_RST</td>
<td>是否不等待unsend和unacked，直接发送RST关闭连接，需要配合socket so_linger机制</td>
</tr>

<tr>
<td>20200331</td>
<td>LWIP_DHCP_SECONDS_ELAPSE</td>
<td>增加DHCP请求的seconds_elapsed，用于标记客户端首次向服务器发出请求后的时间，按照协议标准需要这么做(从rtk上移植)</td>
</tr>

<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
